package com.xiangge.demo;
/*
     死循环:
         定义： 条件判断一直成立,循环一直不能结束的循环
         分类：
            -- 对程序有害的死循环：
                    原因： 初学者对于循环格式补属性或者逻辑混乱造成
                    解决： 原则： 控制循环的条件距离循环的终点越来越近
            -- 对程序有利的死循环：
                    原因： 有些需求中无法得知循环的执行次数,那么建议：先使用死循环，然后当满足某一个条件时,手动结束死循环
         常见的最简单的死循环：
               for(;;){}
               while(true){}
               do{}while(true);
 */
public class ForDemo4 {
    public static void main(String[] args) {

        int count = 0;

        for(double paper = 0.01 ; paper < 884844 ;count++){
            // 折纸
            paper = paper * 2;
            // 每折一次统计一次

        }
        System.out.println("折纸的次数为：" + count + "次。");// 折纸的次数为：27次。

    }
    public static void main2(String[] args) {
        /*
            假设有一张无限大的纸,纸的初始厚度为：0.01cm , 已知：珠穆朗玛峰的高度为：8848.44米,请问纸折叠多少次可以达到珠穆朗玛峰的高度
                  提示： 每次折纸，纸的厚度变为原来的2倍

                  分析：
                      1. 因为折纸是一个重复动作,而且不知道具体要重复折纸多少次: 使用死循环  while(true){}
                      2. 在循环中：折纸： paper = paper * 2;
                      3. 在循环中,每次折完纸之后,应该使用if单选判断paper是否到达：884844厘米
                                   到了： 使用break关键字手动结束死循环
                                   没到： 继续下一轮循环
         */
        // 定义统计变量：count
        int count = 0;
        // 1. 定义纸的初始厚度：paper , 值是：0.01厘米
        double paper = 0.01;
        // 2. 不知道具体要重复折纸多少次: 使用死循环  while(true){}
        while (true) {
            // 3. 每次循环，都需要折纸
            paper = paper * 2;
            // 每次折纸之后都需要统计一次
            count++;
            // 4. 在循环中,每次折完纸之后,应该使用if单选判断paper是否到达：884844厘米
            if (paper >= 884844) {
                // 结束折纸：使用break关键字手动结束死循环
                break;
            }
        }
        // 程序走到此处说明：paper >= 884844 ，输出count即可
        System.out.println("折纸的次数为：" + count + "次。");// 折纸的次数为：27次。
    }
    public static void main1(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if(i % 2 == 0){
                System.out.println(i+"是偶数");
            }
        }
    }
}
